package com.doit.day04

import scala.io.Source

/**
 * 用户日志行为数据
 * pv：浏览的次数
 * uv：浏览的人数(去重)
 */
object _05_计算pvuv {
  def main(args: Array[String]): Unit = {
    //读取数据
    val list: List[String] = Source.fromFile("data/pvuv.txt").getLines().toList

    //针对原来的元素进行切割成数组
    val list1: List[Array[String]] = list.map(_.split(","))

    //针对脏数据进行过滤
    val filtered: List[Array[String]] = list1.filter(arr => {
      arr.size == 3 && !arr(1).isEmpty
    })

    //过滤完成之后，需要分组，然后求pv和uv
    //map的key 指的是 页面和日期(年月日)
    val map: Map[(String, String), List[Array[String]]] = filtered.groupBy(arr => (arr(0), arr(2).split("\\s+")(0)))

    map.map(tp=>{
      //页面和日期(年月日)
      val key: (String, String) = tp._1
      val value: List[Array[String]] = tp._2//List(Array(页面，用户id，日期)，Array(页面，用户id，日期)，Array(页面，用户id，日期))
      //
      val userIds: List[String] = value.map(arr => {
        arr(1)
      })
      (key,userIds.size,userIds.distinct.size)
    }).foreach(println)

  }
}
